package com.hubspot.jackson.jaxrs.util; import java.util.HashSet; import java.util.Set; import javax.ws.rs.core.Application; import com.hubspot.jackson.jaxrs.PropertyFilteringMessageBodyWriter; import org.eclipse.jetty.server.NetworkConnector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.glassfish.jersey.servlet.ServletContainer; /** * Adapted from Jackson source, credit to Tatu Saloranta * (unfortunately they don't ship a test JAR so I couldn't reuse their code) */ public enum Helper { INSTANCE; public Server startServer() throws Exception { Server server = new Server(0); ContextHandlerCollection contexts = new ContextHandlerCollection(); server.setHandler(contexts); ServletHolder jaxrs = new ServletHolder(ServletContainer.class); jaxrs.setInitParameter("javax.ws.rs.Application", TestApplication.class.getName()); ServletContextHandler mainHandler = new ServletContextHandler(contexts, "/", true, false); mainHandler.addServlet(jaxrs, "/*"); server.setHandler(mainHandler); server.start(); return server; } public int getPort(Server server) { return ((NetworkConnector) server.getConnectors()[0]).getLocalPort(); } public static class TestApplication extends Application { @Override public Set<Class<?>> getClasses() { Set<Class<?>> classes = new HashSet<Class<?>>(); classes.add(PropertyFilteringMessageBodyWriter.class); return classes; } @Override public Set<Object> getSingletons() { Set<Object> singletons = new HashSet<Object>(); singletons.add(new TestResource()); return singletons; } } }